Contents
import numpy as np
import pickle
import networkx as nx
import pandas as pd
import holoviews as hv
import geoviews as gv
from colorcet import palette
import bokeh
import warnings
import matplotlib.pyplot as plt
import matplotlib.lines as mlines
from bokeh.sampledata.us_states import data as us_states
from mpl_toolkits.basemap import Basemap as Basemap
from holoviews.operation.datashader import datashade, directly_connect_edges
from shapely.errors import ShapelyDeprecationWarning
warnings.filterwarnings("ignore", category=ShapelyDeprecationWarning)
hv.extension('bokeh')
edges = pd.read_csv(r'C:\Users\dajka\Documents\Egyetem\MSC\III\dsdatasci\data/bidirectional_edges.csv')
user_df = pd.read_csv(r'C:\Users\dajka\Documents\Egyetem\MSC\III\dsdatasci\data/us_users_in_network.csv')
# Select the 150 most followed users
most_followed_df = user_df.sort_values('follower_number', ascending=False).iloc[:150,]
# Select only US mainland airports
user_points = gv.Points(most_followed_df, kdims=['lon', 'lat'])\
.select(Latitude=(20, 70), Longitude=(-175, -50))
routes = edges[edges.iloc[:,0].isin(user_points.data.user_id) &
edges.to.isin(user_points.data.user_id)]
# Convert from Mercator to Latitudes/Longitudes
user_points = gv.operation.project_points(user_points)
# Declare nodes, graph and tiles
nodes = hv.Nodes(user_points.data, kdims=['lon', 'lat', 'user_id'],
vdims=['follower_number'])
graph = hv.Graph((routes, nodes), kdims=['from', 'to'], vdims=['from', 'to'])
tiles = gv.WMTS('https://maps.wikimedia.org/osm-intl/{Z}/{X}/{Y}@2x.png')
%%opts RGB () Graph [width=800 height=800] (edge_selection_line_color='black' edge_hover_line_color='red')
%%opts Graph (node_size=8 edge_line_alpha=0 edge_hover_line_alpha=1 edge_selection_line_alpha=1 edge_nonselection_line_alpha=0)
tiles * datashade(directly_connect_edges(graph), cmap=palette.bgy, width=800, height=800) * graph